const axios = require('axios');
const fs = require('fs')

// 从测试号中获取内容
const APPID = 'wxbc36b2b661c359e9'
const APPSECRET = 'e85cb4cd8c9bfb2cb34ed057aa494ac7'

async function genAccessToken() {
  // 获取access_token
  const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`

  const { access_token } = (await axios.get(url)).data

  //将token和创建时间保存再本地文件里
  const data = {
    access_token,
    create_time: new Date().getTime()
  }
  fs.writeFileSync('./data/access_token.json', JSON.stringify(data))

  return access_token
}

async function getAccessToken() {
  //读取文件中的关于access_token相关的信息
  const json = fs.readFileSync('./data/access_token.json', 'utf8')
  const { access_token, create_time } = JSON.parse(json || '{}')

  //判断token是否过期
  const now = new Date().getTime()

  //如果 token 没有过期，直接返回access_token
  if (access_token && now - create_time <= 7200 * 1000) {
    return access_token
  }

  //如果token过期或者不存在，获取最新的token
  const token = await genAccessToken()
  return token
}

module.exports = {
  genAccessToken,
  getAccessToken
}
